package com.ruge._08_springboot_springdata_jpa.controller._03_mapping._06_extends;

import lombok.*;

import javax.persistence.*;

@Entity
@Data
@NoArgsConstructor
@Table(name = "t_extends_product")
//默认使用SINGLE_TABLE策略生成表,一张表维护所有的父类和子类的数据
//在表中添加一个鉴别器列,用来区分数据的类型
/**
 * SINGLE_TABLE 单表继承策略
 *          @Inheritance(Strategy=InheritanceType.SINGLE_TABLE)
 *          @DiscriminatorColumn(name=”辨别字段列名”)   default:dtype
 *          @DiscriminatorValue(父类实体辨别字段列值)      default:className
 *  create table t_extends_product
 * (
 *     type  varchar(31)  not null,
 *     id    int          not null
 *         primary key,
 *     name  varchar(255) null,
 *     isbn  varchar(255) null,
 *     color varchar(255) null
 * )
 * JOINED   父类实体和子类实体分别对应数据库中不同的表，子类实体的表中只存在其扩展的特殊属性，
 *          父类的公共属性保存在父类实体映射表中。
 *
 */
@Inheritance(strategy = InheritanceType.JOINED)
/*
@DiscriminatorColumn(name="type")
@DiscriminatorValue("1")
*/
public class ExtendsProduct {
    @Id
    @GeneratedValue
    private int id;
    private String name;

    public ExtendsProduct(String name) {
        this.name = name;
    }
}
